描述
公司要做USB KEY相关的东西,上位机软件需要读取U盘的 VID,PID,Serial number。
之前在网上下载了一个VC++6.0做的 控制台程序源码,测试可行,自己改动之后,做出了一个小程序,
问题是,这个程序在某些电脑上无法正常读出U盘信息,在某些电脑上却可以。
可能是VC++6.0 对WIN7 的兼容性不太好。
于是决定转战VS2010+WDK,做一些简单的USB驱动的东西。
MSDN的USB VIEW源码是很不错的参考资料。
## 环境搭建
- 首先VS2010安装,WDK安装,按照步骤进行,之后打开USB view工程(CSDN上下载来的VS2010版本),
编译之后,一步一步出现了很多问题,下面逐个解决:
error RC2247 : SYMBOL name too long:
你好,我在2010里面也遇到了error RC2247 : SYMBOL name too long ,我是这么解决的把#define APSTUDIO_HIDDEN_SYMBOLS,,复制到C:/Program Files/Microsoft SDKs/Windows/v7.0A/
Include/这路径下的PrSht.h文件,然后瞬间解决问题,特此跟你说下。谢谢你的方法。如果别人遇到同样的问题,请自行解决。缺少“devioctl.h””usbioctl.h”
需要安装WDK,这些文件在WDK安装好之后的目录里,
安装好WDK后,在VC的工具->选项->目录里添加DDK里面的API里devioctl.h
3.VS2010中“工具>选项中的VC++目录编辑功能已被否决”解决方法:
执行菜单栏“视图——其他窗口——属性管理器”,可以看到“属性管理器”显示在工作区左侧。
双击Debug | Win32下的“Microsoft.Cpp.Win32.user“,在弹出的配置框中配置
- D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(543): error C2143: 语法错误 : 缺少“)”(在“const”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(543): error C2143: 语法错误 : 缺少“{”(在“const”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(543): error C2059: 语法错误:“,”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(543): error C2059: 语法错误:“)”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(550): error C2143: 语法错误 : 缺少“)”(在“const”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(550): error C2143: 语法错误 : 缺少“{”(在“const”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(550): error C2059: 语法错误:“,”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(550): error C2059: 语法错误:“)” 等:
如果出现类似如下编译错误,解决方法是:拷贝C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\sal.h,然后覆盖掉C:\WinDDK\7600.16385.1\inc\api\sal.h。
- 终极解决方案:
VS2010在经历一些更新后,建立Win32 Console Project时会出“error LNK1123” 错误,
解决方案为将 项目|项目属性|配置属性|清单工具|输入和输出|嵌入清单 “是”改为“否”即可,但是没新建一个项目都要这样设置一次。
在建立VS2010 Win32 Project项目时,按照上面解决方案依然发生了“error LNK1123”错误,经过上网查资料,解决方案为:
第一步:与上相同。
第二步:将 项目|项目属性|配置属性|连接器|清单文件|嵌入清单 “是”改为“否”。
第三步:一般计算机经过上两步设置就能解决问题了,但是如果还有问题,那就按一下方法解决:
计算机是否为64bit操作系统,如是,继续2。
查找是否有两个cvtres.exe。一个是C:\Program Files(x86)\Microsoft Visual Studio 10.0\vc\bin\cvtres.exe, 另一个是C:\Windows\Microsoft.NET\Framework\v
4.0.30319\cvtres.exe。右键属性|详细信息 查看两者版本号,删除/重命名较旧的版本,或者重新设置Path变量。
意外的是,治本的办法是第三步,删除旧版本的cvtres.exe后,就不需要每次都设置配置了。
因为一直是做firmware开发的,没有做过PC机软件开发,掌握基本C++语法,但是并不熟悉VS2010开发环境,
所以在开发环境搭建和编译的过程中出了很多问题,而只能通过网络寻找解决办法,
以上方法都是网上搜索来的,感谢热心网友的贡献,让我的开发少走许多弯路。